package com.hzlj.position.locate.service;

import com.fz.common.base.dto.PageParamDTO;
import com.fz.common.base.dto.QueryPageResultDTO;
import com.hzlj.common.message.common.dto.message.MessageNotifyDTO;
import com.hzlj.position.config.common.dto.common.ReportLocateDTO;
import com.hzlj.position.locate.common.common.ReadUpdateDTO;
import com.hzlj.position.locate.common.dto.reportCommon.ReportHandleDTO;
import com.hzlj.position.locate.common.dto.reportInspection.ReportInspectionQueryParamDTO;
import com.hzlj.position.locate.common.dto.reportInspection.ReportInspectionWithJzJbxxDTO;
import com.hzlj.position.locate.common.model.ReportInspection;
import com.hzlj.sqjz.config.common.dto.common.handle.HandleCommonQueryResultDTO;

import java.util.Date;
import java.util.List;

/**
 * 通信联络核查-核查(ReportInspection)表服务接口
 *
 * @author lifh
 * @date 2023-07-21 14:20:19
 */
public interface ReportInspectionService {

    /**
     * 删除记录
     */
    void delete(String jzId, Date date);

    /**
     * 删除未成功的记录(wait，never)
     */
    void deleteByJgCodeWithUnSuccess(String reportType,
                                     String jgCode,
                                     Date startDay,
                                     Date endDay);

    /**
     * 位置上报
     */
    void reportLocate(ReportLocateDTO locate);

    /**
     * 批量更新
     * 注：如果nextRetryTime=null，则会更新为空
     */
    void updateByInspections(List<ReportInspection> inspections);

    /**
     * 查询列表：不分页
     */
    List<ReportInspectionWithJzJbxxDTO> listReportInspection(ReportInspectionQueryParamDTO dto);

    /**
     * 查询列表：分页
     */
    QueryPageResultDTO<ReportInspectionWithJzJbxxDTO> pageReportInspection(ReportInspectionQueryParamDTO dto, PageParamDTO page);

    /**
     * 处理
     */
    void handle(ReportHandleDTO dto);

    /**
     * 设置已读
     */
    void read(ReadUpdateDTO dto);

    /**
     * 获取处理结果
     */
    HandleCommonQueryResultDTO getHandleResult(String id, Date belongDay);

    /**
     * 修改消息的通知的EXT
     */
    void updateMessageNoticeExt(String id,
                                Date belongDay,
                                MessageNotifyDTO notify);

}
